﻿
namespace Niknak.Services.TaskScheduler.Wcf.RemoteTaskScheduler
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(Namespace = "http://niknak.org/Services/TaskScheduler/v1", ConfigurationName = "RemoteTaskScheduler.IWcfEndpoint")]
    public interface IWcfEndpoint
    {
        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/Ping", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/PingResponse")]
        string Ping();

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetRunningTaskIds", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetRunningTaskIdsResponse")]
        System.Guid[] GetRunningTaskIds();

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/Reset", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/ResetResponse")]
        bool Reset();

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/Restart", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/RestartResponse")]
        bool Restart();

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/RaiseIterationCompletedEvent", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/RaiseIterationCompletedEventResponse")]
        bool RaiseIterationCompletedEvent(System.Guid scheduledTaskId, System.DateTime iterationDate);

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetServiceUptime", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetServiceUptimeResponse")]
        long GetServiceUptime();

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetEndpointUptime", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetEndpointUptimeResponse")]
        long GetEndpointUptime();

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetCustomEventLogName", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/GetCustomEventLogNameResponse")]
        string GetCustomEventLogName();

        [System.ServiceModel.OperationContractAttribute(Action = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/ReadFromEventLog", ReplyAction = "http://niknak.org/Services/TaskScheduler/v1/IWcfEndpoint/ReadFromEventLogResponse")]
        SerializableEventRecord[] ReadFromEventLog(string logName, ServiceCore.InternalEnums.EventLogLevel[] logLevels, string providerName, System.DateTime afterTimestamp, System.DateTime beforeTimestamp, int skip, int take);
    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface IWcfEndpointChannel : Niknak.Services.TaskScheduler.Wcf.RemoteTaskScheduler.IWcfEndpoint, System.ServiceModel.IClientChannel
    {
    }

    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class WcfEndpointClient : System.ServiceModel.ClientBase<Niknak.Services.TaskScheduler.Wcf.RemoteTaskScheduler.IWcfEndpoint>, Niknak.Services.TaskScheduler.Wcf.RemoteTaskScheduler.IWcfEndpoint, Niknak.Services.ServiceCore.Wcf.IPingable
    {
        public WcfEndpointClient()
        {
        }

        public WcfEndpointClient(string endpointConfigurationName) :
            base(endpointConfigurationName)
        {
        }

        public WcfEndpointClient(string endpointConfigurationName, string remoteAddress) :
            base(endpointConfigurationName, remoteAddress)
        {
        }

        public WcfEndpointClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
            base(endpointConfigurationName, remoteAddress)
        {
        }

        public WcfEndpointClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
            base(binding, remoteAddress)
        {
        }

        public string Ping()
        {
            return base.Channel.Ping();
        }

        public System.Guid[] GetRunningTaskIds()
        {
            return base.Channel.GetRunningTaskIds();
        }

        public bool Reset()
        {
            return base.Channel.Reset();
        }

        public bool Restart()
        {
            return base.Channel.Restart();
        }

        public bool RaiseIterationCompletedEvent(System.Guid scheduledTaskId, System.DateTime iterationDate)
        {
            return base.Channel.RaiseIterationCompletedEvent(scheduledTaskId, iterationDate);
        }

        public long GetServiceUptime()
        {
            return base.Channel.GetServiceUptime();
        }

        public long GetEndpointUptime()
        {
            return base.Channel.GetEndpointUptime();
        }

        public string GetCustomEventLogName()
        {
            return base.Channel.GetCustomEventLogName();
        }

        public SerializableEventRecord[] ReadFromEventLog(string logName, ServiceCore.InternalEnums.EventLogLevel[] logLevels, string providerName, System.DateTime afterTimestamp, System.DateTime beforeTimestamp, int skip, int take)
        {
            return base.Channel.ReadFromEventLog(logName, logLevels, providerName, afterTimestamp, beforeTimestamp, skip, take);
        }
    }
}
